package com.iplant.wms.service.po.asn;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.iplant.base.utils.annotation.po.DBBasePO;
import com.iplant.base.utils.general.CalendarTool;
import com.iplant.basic.service.po.bpm.BPMTaskBase;

import java.io.Serializable;
import java.util.Calendar;

/**
 * 质检任务 依托于到货通知单明细
 *
 * @author femi
 */
@DBBasePO(TableName = "wms_inspecttask", CheckName = {
        "ArrivalNoticeItemCode"}, CodeAuto = true, CodePrefix = "MI{yyMM}", CodeNum = 5)
public class WMSInspectTask extends BPMTaskBase implements Serializable {

    /**
     * 序列化
     */
    private static final long serialVersionUID = 1L;


    /**
     * 通知单   Name 可用作行号    Active 是状态
     */
    public String ArrivalNoticeCode = "";

    /**
     * 通知单描述
     */
    public String ArrivalNoticeDesc = "";


    /**
     * 通知单   Name 可用作行号    Active 是状态
     */
    public String ArrivalNoticeItemCode = "";

    public String ArrivalNoticeItemName = "";

    public String ArrivalNoticeItemDesc = "";

    /**
     * 采购单编号
     */
    public String PurchaseOrderCode = "";
    /**
     * 采购单行号
     */
    public String PurchaseOrderItemCode = "";

    /**
     * 检验单 类型
     */
    public int TypeID = 0;
    public String TypeName = "";
    public String TypeCode = "";

    /**
     * 通知单状态
     */
    public int NoticeStatus = 0;

    /**
     * 通知单行状态
     */
    public int ItemNoticeStatus = 0;
    /**
     * 客户ID 来源于通知单
     */
    public int CustomerID = 0;
    public String CustomerName = "";
    public String CustomerCode = "";

    public int SupplierID = 0;

    public String SupplierCode = "";

    public String SupplierName = "";

    public int StoreID = 0;
    public String StoreName = "";
    public String StoreCode = "";


    /**
     * 物料编码
     */
    public String MaterialNo = "";

    /**
     * 物料名称
     */
    public String MaterialName = "";


    public int MaterialUnitID = 0;

    public String MaterialUnitName = "";

    public double MaterialUnitRate = 1;

    /**
     * 收货单位
     */
    public String ReceiveUnit = "";

    /**
     * 包装规则
     */

    public String PackageRuleCode = "";

    public String PackageRuleName = "";

    /**
     * 检验标准
     */
    public String IPTStandardCode = "";

    public String IPTStandardName = "";

    /**
     * 抽样规则
     */
    public String SampleRuleCode = "";

    public String SampleRuleName = "";

    /**
     * 物料数量   物料数量
     */
    public double MaterialNumber = 0.0;


    /**
     * 收货数量
     */
    public double ReceivedMaterialNumber = 0.0;

    /**
     * 应检物料数量   到货通知单期望物料数量
     */
    public double ExpectMaterialNumber = 0.0;

    /**
     * 实际检验物料数量
     */
    public double ActualMaterialNumber = 0.0;

    /**
     * 期望抽检物料数量
     */
    public double ExpectSampleNumber = 0.0;
    /**
     * 期望抽检最小物料数量
     */
    public double ExpectSampleMinNumber = 0.0;

    /**
     * 实际抽检物料数量 管理count查询
     */
    public double ActualSampleNumber = 0.0;

    /**
     * 检验合格数
     */
    public double GoodMaterialNumber = 0.0;
    /**
     * 检验不合格数
     */
    public double BadMaterialNumber = 0.0;

    /**
     * 检验结果
     */
    public int InspectResult = 0;

    /**
     * 检验时间
     */
    public Calendar InspectTime = Calendar.getInstance();

    /**
     * 检验负责人
     */
    public int InspectorID = 0;

    public String InspectorName = "";


    public String POReference1 = "";
    public String POReference2 = "";
    public String POReference3 = "";
    public String POReference4 = "";
    public String POReference5 = "";

    public String UserDefine1 = "";
    public String UserDefine2 = "";
    public String UserDefine3 = "";
    public String UserDefine4 = "";
    public String UserDefine5 = "";

    public int BatchRecordID = 0;
    /**
     * 批次规则
     */

    public String BatchRuleCode = "";

    /**
     * 批次属性01 生产日期
     */


    public Calendar ProductDate = CalendarTool.getBasicDate();

    /**
     * 批次属性02 失效日期
     */
    public Calendar ExpireDate = CalendarTool.getBasicDate();


    /**
     * 批次属性03 入库日期
     */
    public Calendar StockDate = CalendarTool.getBasicDate();

    public String LotAttr04 = "";

    public String LotAttr05 = "";

    public String LotAttr06 = "";

    public String LotAttr07 = "";

    public String LotAttr08 = "";

    public String LotAttr09 = "";

    public String LotAttr10 = "";

    public String LotAttr11 = "";

    public String LotAttr12 = "";

    @JsonProperty("ArrivalNoticeCode")
    public String getArrivalNoticeCode() {
        return ArrivalNoticeCode;
    }

    public void setArrivalNoticeCode(String arrivalNoticeCode) {
        ArrivalNoticeCode = arrivalNoticeCode;
    }

    @JsonProperty("ArrivalNoticeDesc")
    public String getArrivalNoticeDesc() {
        return ArrivalNoticeDesc;
    }

    public void setArrivalNoticeDesc(String arrivalNoticeDesc) {
        ArrivalNoticeDesc = arrivalNoticeDesc;
    }

    @JsonProperty("ArrivalNoticeItemCode")
    public String getArrivalNoticeItemCode() {
        return ArrivalNoticeItemCode;
    }

    public void setArrivalNoticeItemCode(String arrivalNoticeItemCode) {
        ArrivalNoticeItemCode = arrivalNoticeItemCode;
    }

    @JsonProperty("ArrivalNoticeItemName")
    public String getArrivalNoticeItemName() {
        return ArrivalNoticeItemName;
    }

    public void setArrivalNoticeItemName(String arrivalNoticeItemName) {
        ArrivalNoticeItemName = arrivalNoticeItemName;
    }

    @JsonProperty("ArrivalNoticeItemDesc")
    public String getArrivalNoticeItemDesc() {
        return ArrivalNoticeItemDesc;
    }

    public void setArrivalNoticeItemDesc(String arrivalNoticeItemDesc) {
        ArrivalNoticeItemDesc = arrivalNoticeItemDesc;
    }

    @JsonProperty("PurchaseOrderCode")
    public String getPurchaseOrderCode() {
        return PurchaseOrderCode;
    }

    public void setPurchaseOrderCode(String purchaseOrderCode) {
        PurchaseOrderCode = purchaseOrderCode;
    }

    @JsonProperty("PurchaseOrderItemCode")
    public String getPurchaseOrderItemCode() {
        return PurchaseOrderItemCode;
    }

    public void setPurchaseOrderItemCode(String purchaseOrderItemCode) {
        PurchaseOrderItemCode = purchaseOrderItemCode;
    }

    @JsonProperty("TypeID")
    public int getTypeID() {
        return TypeID;
    }

    public void setTypeID(int typeID) {
        TypeID = typeID;
    }

    @JsonProperty("TypeName")
    public String getTypeName() {
        return TypeName;
    }

    public void setTypeName(String typeName) {
        TypeName = typeName;
    }

    @JsonProperty("TypeCode")
    public String getTypeCode() {
        return TypeCode;
    }

    public void setTypeCode(String typeCode) {
        TypeCode = typeCode;
    }

    @JsonProperty("NoticeStatus")
    public int getNoticeStatus() {
        return NoticeStatus;
    }

    public void setNoticeStatus(int noticeStatus) {
        NoticeStatus = noticeStatus;
    }

    @JsonProperty("ItemNoticeStatus")
    public int getItemNoticeStatus() {
        return ItemNoticeStatus;
    }

    public void setItemNoticeStatus(int itemNoticeStatus) {
        ItemNoticeStatus = itemNoticeStatus;
    }

    @JsonProperty("CustomerID")
    public int getCustomerID() {
        return CustomerID;
    }

    public void setCustomerID(int customerID) {
        CustomerID = customerID;
    }

    @JsonProperty("CustomerName")
    public String getCustomerName() {
        return CustomerName;
    }

    public void setCustomerName(String customerName) {
        CustomerName = customerName;
    }

    @JsonProperty("CustomerCode")
    public String getCustomerCode() {
        return CustomerCode;
    }

    public void setCustomerCode(String customerCode) {
        CustomerCode = customerCode;
    }

    @JsonProperty("SupplierID")
    public int getSupplierID() {
        return SupplierID;
    }

    public void setSupplierID(int supplierID) {
        SupplierID = supplierID;
    }

    @JsonProperty("SupplierCode")
    public String getSupplierCode() {
        return SupplierCode;
    }

    public void setSupplierCode(String supplierCode) {
        SupplierCode = supplierCode;
    }

    @JsonProperty("SupplierName")
    public String getSupplierName() {
        return SupplierName;
    }

    public void setSupplierName(String supplierName) {
        SupplierName = supplierName;
    }

    @JsonProperty("StoreID")
    public int getStoreID() {
        return StoreID;
    }

    public void setStoreID(int storeID) {
        StoreID = storeID;
    }

    @JsonProperty("StoreName")
    public String getStoreName() {
        return StoreName;
    }

    public void setStoreName(String storeName) {
        StoreName = storeName;
    }

    @JsonProperty("StoreCode")
    public String getStoreCode() {
        return StoreCode;
    }

    public void setStoreCode(String storeCode) {
        StoreCode = storeCode;
    }

    @JsonProperty("MaterialNo")
    public String getMaterialNo() {
        return MaterialNo;
    }

    public void setMaterialNo(String materialNo) {
        MaterialNo = materialNo;
    }

    @JsonProperty("MaterialName")
    public String getMaterialName() {
        return MaterialName;
    }

    public void setMaterialName(String materialName) {
        MaterialName = materialName;
    }

    @JsonProperty("MaterialUnitID")
    public int getMaterialUnitID() {
        return MaterialUnitID;
    }

    public void setMaterialUnitID(int materialUnitID) {
        MaterialUnitID = materialUnitID;
    }

    @JsonProperty("MaterialUnitName")
    public String getMaterialUnitName() {
        return MaterialUnitName;
    }

    public void setMaterialUnitName(String materialUnitName) {
        MaterialUnitName = materialUnitName;
    }

    @JsonProperty("MaterialUnitRate")
    public double getMaterialUnitRate() {
        return MaterialUnitRate;
    }

    public void setMaterialUnitRate(double materialUnitRate) {
        MaterialUnitRate = materialUnitRate;
    }

    @JsonProperty("ReceiveUnit")
    public String getReceiveUnit() {
        return ReceiveUnit;
    }

    public void setReceiveUnit(String receiveUnit) {
        ReceiveUnit = receiveUnit;
    }

    @JsonProperty("PackageRuleCode")
    public String getPackageRuleCode() {
        return PackageRuleCode;
    }

    public void setPackageRuleCode(String packageRuleCode) {
        PackageRuleCode = packageRuleCode;
    }

    @JsonProperty("PackageRuleName")
    public String getPackageRuleName() {
        return PackageRuleName;
    }

    public void setPackageRuleName(String packageRuleName) {
        PackageRuleName = packageRuleName;
    }

    @JsonProperty("IPTStandardCode")
    public String getIPTStandardCode() {
        return IPTStandardCode;
    }

    public void setIPTStandardCode(String IPTStandardCode) {
        this.IPTStandardCode = IPTStandardCode;
    }

    @JsonProperty("IPTStandardName")
    public String getIPTStandardName() {
        return IPTStandardName;
    }

    public void setIPTStandardName(String IPTStandardName) {
        this.IPTStandardName = IPTStandardName;
    }

    @JsonProperty("SampleRuleCode")
    public String getSampleRuleCode() {
        return SampleRuleCode;
    }

    public void setSampleRuleCode(String sampleRuleCode) {
        SampleRuleCode = sampleRuleCode;
    }

    @JsonProperty("SampleRuleName")
    public String getSampleRuleName() {
        return SampleRuleName;
    }

    public void setSampleRuleName(String sampleRuleName) {
        SampleRuleName = sampleRuleName;
    }

    @JsonProperty("MaterialNumber")
    public double getMaterialNumber() {
        return MaterialNumber;
    }

    public void setMaterialNumber(double materialNumber) {
        MaterialNumber = materialNumber;
    }

    @JsonProperty("ReceivedMaterialNumber")
    public double getReceivedMaterialNumber() {
        return ReceivedMaterialNumber;
    }

    public void setReceivedMaterialNumber(double receivedMaterialNumber) {
        ReceivedMaterialNumber = receivedMaterialNumber;
    }

    @JsonProperty("ExpectMaterialNumber")
    public double getExpectMaterialNumber() {
        return ExpectMaterialNumber;
    }

    public void setExpectMaterialNumber(double expectMaterialNumber) {
        ExpectMaterialNumber = expectMaterialNumber;
    }

    @JsonProperty("ActualMaterialNumber")
    public double getActualMaterialNumber() {
        return ActualMaterialNumber;
    }

    public void setActualMaterialNumber(double actualMaterialNumber) {
        ActualMaterialNumber = actualMaterialNumber;
    }

    @JsonProperty("ExpectSampleNumber")
    public double getExpectSampleNumber() {
        return ExpectSampleNumber;
    }

    public void setExpectSampleNumber(double expectSampleNumber) {
        ExpectSampleNumber = expectSampleNumber;
    }

    @JsonProperty("ExpectSampleMinNumber")
    public double getExpectSampleMinNumber() {
        return ExpectSampleMinNumber;
    }

    public void setExpectSampleMinNumber(double expectSampleMinNumber) {
        ExpectSampleMinNumber = expectSampleMinNumber;
    }

    @JsonProperty("BatchRuleCode")
    public String getBatchRuleCode() {
        return BatchRuleCode;
    }

    public void setBatchRuleCode(String batchRuleCode) {
        BatchRuleCode = batchRuleCode;
    }

    @JsonProperty("ActualSampleNumber")
    public double getActualSampleNumber() {
        return ActualSampleNumber;
    }

    public void setActualSampleNumber(double actualSampleNumber) {
        ActualSampleNumber = actualSampleNumber;
    }

    @JsonProperty("GoodMaterialNumber")
    public double getGoodMaterialNumber() {
        return GoodMaterialNumber;
    }

    public void setGoodMaterialNumber(double goodMaterialNumber) {
        GoodMaterialNumber = goodMaterialNumber;
    }

    @JsonProperty("BadMaterialNumber")
    public double getBadMaterialNumber() {
        return BadMaterialNumber;
    }

    public void setBadMaterialNumber(double badMaterialNumber) {
        BadMaterialNumber = badMaterialNumber;
    }

    @JsonProperty("InspectResult")
    public int getInspectResult() {
        return InspectResult;
    }

    public void setInspectResult(int inspectResult) {
        InspectResult = inspectResult;
    }

    @JsonProperty("InspectTime")
    public Calendar getInspectTime() {
        return InspectTime;
    }

    public void setInspectTime(Calendar inspectTime) {
        InspectTime = inspectTime;
    }

    @JsonProperty("InspectorID")
    public int getInspectorID() {
        return InspectorID;
    }

    public void setInspectorID(int inspectorID) {
        InspectorID = inspectorID;
    }

    @JsonProperty("InspectorName")
    public String getInspectorName() {
        return InspectorName;
    }

    public void setInspectorName(String inspectorName) {
        InspectorName = inspectorName;
    }

    @JsonProperty("POReference1")
    public String getPOReference1() {
        return POReference1;
    }

    public void setPOReference1(String POReference1) {
        this.POReference1 = POReference1;
    }

    @JsonProperty("POReference2")
    public String getPOReference2() {
        return POReference2;
    }

    public void setPOReference2(String POReference2) {
        this.POReference2 = POReference2;
    }

    @JsonProperty("POReference3")
    public String getPOReference3() {
        return POReference3;
    }

    public void setPOReference3(String POReference3) {
        this.POReference3 = POReference3;
    }

    @JsonProperty("POReference4")
    public String getPOReference4() {
        return POReference4;
    }

    public void setPOReference4(String POReference4) {
        this.POReference4 = POReference4;
    }

    @JsonProperty("POReference5")
    public String getPOReference5() {
        return POReference5;
    }

    public void setPOReference5(String POReference5) {
        this.POReference5 = POReference5;
    }

    @JsonProperty("UserDefine1")
    public String getUserDefine1() {
        return UserDefine1;
    }

    public void setUserDefine1(String userDefine1) {
        UserDefine1 = userDefine1;
    }

    @JsonProperty("UserDefine2")
    public String getUserDefine2() {
        return UserDefine2;
    }

    public void setUserDefine2(String userDefine2) {
        UserDefine2 = userDefine2;
    }

    @JsonProperty("UserDefine3")
    public String getUserDefine3() {
        return UserDefine3;
    }

    public void setUserDefine3(String userDefine3) {
        UserDefine3 = userDefine3;
    }

    @JsonProperty("UserDefine4")
    public String getUserDefine4() {
        return UserDefine4;
    }

    public void setUserDefine4(String userDefine4) {
        UserDefine4 = userDefine4;
    }

    @JsonProperty("UserDefine5")
    public String getUserDefine5() {
        return UserDefine5;
    }

    public void setUserDefine5(String userDefine5) {
        UserDefine5 = userDefine5;
    }

    @JsonProperty("BatchRecordID")
    public int getBatchRecordID() {
        return BatchRecordID;
    }

    public void setBatchRecordID(int batchRecordID) {
        BatchRecordID = batchRecordID;
    }

    @JsonProperty("ProductDate")
    public Calendar getProductDate() {
        return ProductDate;
    }

    public void setProductDate(Calendar productDate) {
        ProductDate = productDate;
    }

    @JsonProperty("ExpireDate")
    public Calendar getExpireDate() {
        return ExpireDate;
    }

    public void setExpireDate(Calendar expireDate) {
        ExpireDate = expireDate;
    }

    @JsonProperty("StockDate")
    public Calendar getStockDate() {
        return StockDate;
    }

    public void setStockDate(Calendar stockDate) {
        StockDate = stockDate;
    }

    @JsonProperty("LotAttr04")
    public String getLotAttr04() {
        return LotAttr04;
    }

    public void setLotAttr04(String lotAttr04) {
        LotAttr04 = lotAttr04;
    }

    @JsonProperty("LotAttr05")
    public String getLotAttr05() {
        return LotAttr05;
    }

    public void setLotAttr05(String lotAttr05) {
        LotAttr05 = lotAttr05;
    }

    @JsonProperty("LotAttr06")
    public String getLotAttr06() {
        return LotAttr06;
    }

    public void setLotAttr06(String lotAttr06) {
        LotAttr06 = lotAttr06;
    }

    @JsonProperty("LotAttr07")
    public String getLotAttr07() {
        return LotAttr07;
    }

    public void setLotAttr07(String lotAttr07) {
        LotAttr07 = lotAttr07;
    }

    @JsonProperty("LotAttr08")
    public String getLotAttr08() {
        return LotAttr08;
    }

    public void setLotAttr08(String lotAttr08) {
        LotAttr08 = lotAttr08;
    }

    @JsonProperty("LotAttr09")
    public String getLotAttr09() {
        return LotAttr09;
    }

    public void setLotAttr09(String lotAttr09) {
        LotAttr09 = lotAttr09;
    }

    @JsonProperty("LotAttr10")
    public String getLotAttr10() {
        return LotAttr10;
    }

    public void setLotAttr10(String lotAttr10) {
        LotAttr10 = lotAttr10;
    }

    @JsonProperty("LotAttr11")
    public String getLotAttr11() {
        return LotAttr11;
    }

    public void setLotAttr11(String lotAttr11) {
        LotAttr11 = lotAttr11;
    }

    @JsonProperty("LotAttr12")
    public String getLotAttr12() {
        return LotAttr12;
    }

    public void setLotAttr12(String lotAttr12) {
        LotAttr12 = lotAttr12;
    }
}
